package com.me.dao;

import java.util.List;

public interface BaseDAO<T> {
	/*************************精确查询*************************/
	
	// 查询实体集合
	List<T> preciseQuery(T t);
	
	// 查询记录条数
	Integer preciseCount(T t);
	
	// 根据主键查询记录
	T queryById(Integer id);
	
	/*************************模糊查询*************************/
	/**
	 * 通用查询
	 * 条件：若传入值为null或未初始化对象，则查询全部
	 * 字段条件：若有字段信息传入，则进行字段的模糊查询
	 * 分页条件：若有分页参数传入，则进行分页查询
	 * 排序条件：若有排序参数传入，则进行排序。默认排序为“主键 倒序”
	 */
	List<T> query(T t);
	
	/**
	 * 查询记录数
	 * 条件：若传入值为null或未初始化对象，则查询全部记录数
	 * 字段条件：若有字段信息传入，则进行字段的模糊查询
	 */
	Integer count(T t);
	
	/*************************基本DML操作*************************/
	
	void insert(T t) throws Exception;
	
	void update(T t) throws Exception;
	
	void delete(T t) throws Exception;
	
	void deleteById(Integer id) throws Exception;
}
